package appbenedictoxvi;

import java.util.ArrayList;

public class AdmCurso {
    
    private ArrayList<Curso> cursos;

    public AdmCurso()
    {
        cursos = new ArrayList<Curso>();
    }
    
    public ArrayList<Curso> getCursos(){
        return cursos;
    }

    public void setCursos(ArrayList<Curso> cursos)
    {
        this.cursos = cursos;
    }
    
    public void registrarCurso(String cod_curso, String nom_curso) throws BusinessException
    {
        validarDatos(cod_curso, nom_curso);
        //Crear un nuevo curso
        Curso curso = new Curso(cod_curso, nom_curso);
        //Adicionar el nuevo curso a la colección
        cursos.add(curso);
    }

    public Curso buscarCurso(String cod_curso) 
    {
        for (Curso curso : cursos) {
            if (curso.getCod_curso().equals(cod_curso)) {
                return curso;
            }
        }
        return null;
    }

    private void validarDatos(String cod_curso, String nom_curso) throws BusinessException
    {
        validarDatosMandatorios(cod_curso, nom_curso);
        validarDuplicidad(cod_curso);
    }

    private void validarDatosMandatorios(String cod_curso, String nom_curso) throws BusinessException
    {
        String mensaje = "";
        if (cod_curso == null || cod_curso.isEmpty()) {
            mensaje += "\n Código no puede ser vacio.";
        }
        if (nom_curso == null || nom_curso.isEmpty()) {
            mensaje += "\n Nombre no pueder ser vacio.";
        }
        if (!mensaje.isEmpty()) {
            throw new BusinessException(mensaje);
        }
    }

    private void validarDuplicidad(String cod_curso) throws BusinessException
    {
        Curso curso = buscarCurso(cod_curso);
        if (curso != null) {
            String mensaje = "Código : " + cod_curso + " duplicado.";
            throw new BusinessException(mensaje);
        }
    }

    public void eliminarCurso(String cod_curso) throws BusinessException
    {
        Curso curso = buscarCurso(cod_curso);
        if (curso != null){
            cursos.remove(curso);
           
        } else {
            ValidarEliminacionDeUnCursoInexistente(cod_curso);  
        }
    }

    private void ValidarEliminacionDeUnCursoInexistente(String cod_curso) throws BusinessException 
    {
        Curso curso = buscarCurso(cod_curso);
        if (curso == null) {
            String mensaje = "Curso a eliminar con código " + cod_curso + " no existe.";
            throw new BusinessException(mensaje);
        }
    }
    
    public void modificarCurso(String cod_curso, String nom_curso)
    {
         Curso curso = buscarCurso(cod_curso);

        if (curso != null) {
          
            curso.setNom_curso(nom_curso);          
        }
    }
}
